我有一个c ++程序,它从文件中获取数据。 文件数据如下:
这是第1行
这是第2行
这是第3行
这是我的阅读方式。
ifstream file;
std::string list[max], temp;
file.open("file");
int i=0;
while ( getline (file, temp )) //while the end of file is NOT reached
{
list[i] = temp;
i++;
}
file.close();
现在我所做的是按如下方式运行循环
for(i=0; i<no_of_lines; i++){
temp = list[i];
}
我想要的是颠倒这条线。例如,第1行数据是 &#39;这是第1行&#39;并在temp中更新数据为&#39; 1行是&#39;
我怎样才能做到这一点?
答案 0 :(得分:0)
我会使用std::vector代替固定数组和std::reverse。此解决方案还将使您的代码对任意数量的输入字符串有效。
完整代码:
typedef vector<string> StrVec;
ifstream file;
string temp;
StrVec strings;
file.open("file");
while(getline (file, temp))
{
strings.push_back(temp);
}
file.close()
printf("Before reverse:\n\n");
for(StrVec::iterator i = strings.begin(); i != strings.end(); ++i)
{
printf("%s\n", i->c_str());
}
std::reverse(strings.begin(), strings.end());
printf("\nAfter reverse:\n\n");
for(StrVec::iterator i = strings.begin(); i != strings.end(); ++i)
{
printf("%s\n", i->c_str());
}