如何从文件中获取整数并将它们放入 int 向量中?
我正在尝试获取一个文本文件并获取文件内的整数并将它们传输到一个可以读入不同函数的向量中。
这是我到目前为止所拥有的:
int main(int argc, char *argv[] )
{
vector<int> buff;
argv[1] = "input_24_0.txt";
if (argc < 2)
{
std::cout << "usage: " << argv[0] << " <filename>\n";
return 2;
}
std::ifstream fin(argv[1]);
if (fin)
{
std::stringstream ss;
// this copies the entire contents of the file into the string stream
ss << fin.rdbuf();
// get the string out of the string stream
std::string contents = ss.str();
std::cout << contents;
// construct the vector from the string.
std::vector<int> buff(contents.begin(), contents.end());
}
else
{
std::cout << "Couldn't open " << argv[1] << "\n";
return 1;
}
clock_t t1, t2, t3, t4;
int maxSum;
t1 = clock();
maxSum = maxSubSum1(buff);
cout << "MaxSubSum1 is " << maxSum << endl;
cout << double( clock() - t1 )
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t1 = clock() - t1;
t2 = clock();
maxSum = maxSubSum2( buff );
cout << "MaxSubSum2 is " << maxSum << endl;
cout << double( clock() - t2)
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t2 = clock() - t2;
t3 = clock();
maxSum = maxSubSum3(buff );
cout << "MaxSubSum3 is " << maxSum << endl;
cout << double( clock() - t3 )
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t3 = clock() - t3;
t4 = clock();
maxSum = maxSubSum4( buff );
cout << "MaxSubSum4 is " << maxSum << endl;
cout << double( clock() - t4 )
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t4 = clock() - t4;
system("pause");
return 0;
}
I am trying to take a text file and take the integers inside the file and transfer them into a vector in which can be read into different functions.
This is what i have so far:
int main(int argc, char *argv[] )
{
vector<int> buff;
argv[1] = "input_24_0.txt";
if (argc < 2)
{
std::cout << "usage: " << argv[0] << " <filename>\n";
return 2;
}
std::ifstream fin(argv[1]);
if (fin)
{
std::stringstream ss;
// this copies the entire contents of the file into the string stream
ss << fin.rdbuf();
// get the string out of the string stream
std::string contents = ss.str();
std::cout << contents;
// construct the vector from the string.
std::vector<int> buff(contents.begin(), contents.end());
}
else
{
std::cout << "Couldn't open " << argv[1] << "\n";
return 1;
}
clock_t t1, t2, t3, t4;
int maxSum;
t1 = clock();
maxSum = maxSubSum1(buff);
cout << "MaxSubSum1 is " << maxSum << endl;
cout << double( clock() - t1 )
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t1 = clock() - t1;
t2 = clock();
maxSum = maxSubSum2( buff );
cout << "MaxSubSum2 is " << maxSum << endl;
cout << double( clock() - t2)
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t2 = clock() - t2;
t3 = clock();
maxSum = maxSubSum3(buff );
cout << "MaxSubSum3 is " << maxSum << endl;
cout << double( clock() - t3 )
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t3 = clock() - t3;
t4 = clock();
maxSum = maxSubSum4( buff );
cout << "MaxSubSum4 is " << maxSum << endl;
cout << double( clock() - t4 )
/ (double)CLOCKS_PER_SEC<< " seconds." << endl;
t4 = clock() - t4;
system("pause");
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果文件中的数字由空格分隔,您可以执行以下操作:
如果数字不由空格分隔,您可以使用字符串流方法,并循环遍历流,将每个
char
转换为它是十进制值。If the numbers in the file are separated by whitespace, you could do the following:
If the numbers are not separated by whitespace, you can use your string stream approach, and loop through the stream converting each
char
into it's decimal value.