C++ 读取 txt 文件并在每行中附加数据

C++ Read txt file and append data in each line

提问人:xBurnsed 提问时间:11/5/2017 更新时间:11/5/2017 访问量:3001

问:

我想打开一个文件,并在每一行末尾附加一个字符串。

我有这个代码:

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

//argv[1] input file 
//argv[2] string to add in the end of each line
//argv[3] output file
int main(int argc, char *argv[]){

  ifstream open_file(argv[1]);
  if (!open_file) {
      std::cerr << "Could not open input file\n";
      return 0;
  } 
  ofstream new_file(argv[3]);
  if (!new_file) {
     std::cerr << "Could not create output file\n";
     return 0;
  } 
  string s = argv[2];
  string str;
  while (getline(open_file, str)) {
     new_file << str << s << "\n";
  }
}

问题是字符串没有在每行的末尾添加。它正在为每个尝试追加的字符串创建一个新行。

所以我运行例如: ./appendstring.e wordlist.txt hello new_wordlist.txt

这是输出:

enter image description here

我真的不知道我在这里做错了什么。

提前致谢。

C++ IOstream ifstream ofstream

评论

2赞 DimChtz 11/5/2017
只是一个提示:将文件和每一行都读成 ,然后在每一行附加你想要的文本。最后,将所有行写回文件。push_back()std::vector<std::string>

答:

1赞 Grantly 11/5/2017 #1

也许您的第一个文件包含 \r\n 行尾的序列。.

您可能需要删除第一个文件中已有的字符,因为您正在读取带有 on 结尾的字符串。\r\r

在使用以下代码行之前,请剪掉 的末尾:\rstr

new_file << str << s << "\n";

请看这里 http://www.cplusplus.com/reference/string/string/getline/

评论

1赞 xBurnsed 11/5/2017
固定!多谢。你是对的。我所做的只是添加:str.erase(str.size() - 1);
0赞 Grantly 11/5/2017
很高兴它有帮助。欢迎来到 Stackoverflow :)