C ++中字符串的逆序

时间:2015-04-10 13:08:15

标签: c++

我有一个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;

我怎样才能做到这一点?

1 个答案:

答案 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());
}