我想打开一个文件,并在每行中追加一个字符串。
我有这段代码:
#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
这是输出:
我真的不知道我在这里做错了什么。
提前致谢。
答案 0 :(得分:1)
也许你的第一个文件包含行结束的\ r \ n序列..
您可能必须删除第一个文件中已有的\r
字符,因为您正在读取末尾带有\r
的字符串。
在使用此行代码之前,在\r
的末尾修剪str
:
new_file << str << s << "\n";
见这里 http://www.cplusplus.com/reference/string/string/getline/