我是一名计算机科学专业的学生,因此对C++语言没有太多经验(考虑到这是我使用这种语言的第一个学期)或编码.
我被赋予了一个从文本文件中读取整数的赋值,其形式为:
19 3 -2 9 14 4
5 -9 -10 3
.
.
.
Run Code Online (Sandbox Code Playgroud)
这让我更好地了解了I/O操作符,因为我需要使用此流做某些事情(呃).
我到处寻找,无法找到关于extract >>运算符如何在内部工作的简单解释.让我澄清一下我的问题:
我知道提取器>>运算符会提取一个连续元素,直到它到达空格,制表符或换行符.我试图弄清楚的是,指针(?)或读取位置(?)在提取元素之后会在哪里.它会被移除的元素的最后一个字符,还是被移除,因此消失了?它会出现在空格/制表符/'\n'字符本身吗?也许是下一个要素提取的开始?
我希望我很清楚.我缺乏所有适当的术语来更清楚地描述我的问题.
这就是我需要知道的原因:(如果有人想知道......)其中一个要求是分别对每行中的所有整数求和.我创建了一个循环来逐个提取所有整数,直到它到达文件的末尾.但是,我很快就了解到extract >>运算符忽略了空格/制表符/换行符.我想要尝试的是提取>>一个元素,然后使用inputFile.get()来获取空格/制表符/换行符.然后,如果它是换行符,那就做我要做的事情.这仅在流指针处于良好位置以便在最后一次提取>>之后提取空格/制表符/换行符时才有效.
在我之前的问题中,我尝试使用getline()和sstring来解决它.
解:
为了回答我的具体问题,关于运算符>>如何工作,我不得不接受Ben Voigt作为最佳答案的答案.我已经使用了这里建议的其他解决方案(每行使用一个sstring),它们确实有效!(你可以在我之前的问题链接中看到它)但是,我使用Ben的答案实现了另一个解决方案,它也有效:
.
.
.
if(readFile.is_open()) {
while (readFile >> newInput) {
char isNewLine = readFile.get(); //get() the next char after extraction
if(isNewLine == '\n') //This is just a test!
cout << isNewLine; //If it's a newline, feed a newline.
else
cout << "X" << isNewLine; //Else, show X & feed a space …Run Code Online (Sandbox Code Playgroud)