所以基本上我会从代码开始,我的问题写在下面。
string words = "";
fstream outFile;
outFile.open(name, fstream::out);
for (int i = 0; i < number; ++i)
{
getline(cin, words);
outFile << i << ": " << words << endl;
words == "";
}
number
由用户提供。
我想要做的是创建一个文件,放入与数字一样多的记录,按顺序启动每个记录的编号(从0开始),然后将用户写入的文本放入控制台(它是将getline放入&#34;单词&#34;字符串)。
不幸的是我有一个问题,因为冒号后的记录号为0会打破一行,实际上它开始从下一条记录中复制文本。
为什么会这样?有人可以解释一下吗?
编辑:
#include <iostream>
#include <cstdio>
#include <fstream>
#include <string>
using namespace std;
int main()
{
short int counter_of_commands;
string cmd = "";
string name = "";
cin >> counter_of_commands >> cmd;
if (cmd == "create")
{
string words = "";
int records;
cin >> name;
cin >> records;
fstream outFile;
outFile.open(name, fstream::out);
for (int i = 0; i < records; ++i)
{
if (i == 0)
getline(cin, words);
getline(cin, words);
outFile << i << ": " << words << endl;
words == "";
}
outFile.close();
}
return 0;
}
输入: 1
创建example.txt 3
示例111 222
example1 333 444
例2 444 555
我明白了:
0:示例111 222
1:example1 333 444
2:例2 444 555
&lt; - 然而,它创建了第四行(第3行),就好像在第2行结束后,它再次点击进入,但没有写任何东西。这不是我希望它如何工作,它应该创建用户指定的确切行数。
答案 0 :(得分:0)
你忘记了;
吗?
for (int i = 0; i < number; ++i)
而不是
for (int i = 0 i < number; ++i)
编辑(在OP发表评论后):
嗯,这很好用:
int number = 3;
string words = "";
fstream outFile;
outFile.open("c:/test/test1.txt", fstream::out);
for (int i = 0; i < number; ++i) {
getline(cin, words);
outFile << i << ": " << words << endl;
words == "";
}
但正如Vaughn Cato已经指出的那样,你可能正在阅读之前的换行符。