Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;ifstream在末尾读取不存在的换行符 我制作了一个基本的C++程序,读取一个不包含任何新行字符的单行文本文件: ifstream ifs; ifs.open(filename); char c; int cint; while (ifs >> noskipws >> c) { cint = c; cout << "'" << c << "' = " << cint << endl; } ifs; 打开(文件名); 字符c; int cint; while(ifs>>noskipws>>c){ cint=c; 您的输入文件末尾肯定有一个换行符_C++_C++11 - Fatal编程技术网

C++;ifstream在末尾读取不存在的换行符 我制作了一个基本的C++程序,读取一个不包含任何新行字符的单行文本文件: ifstream ifs; ifs.open(filename); char c; int cint; while (ifs >> noskipws >> c) { cint = c; cout << "'" << c << "' = " << cint << endl; } ifs; 打开(文件名); 字符c; int cint; while(ifs>>noskipws>>c){ cint=c; 您的输入文件末尾肯定有一个换行符

C++;ifstream在末尾读取不存在的换行符 我制作了一个基本的C++程序,读取一个不包含任何新行字符的单行文本文件: ifstream ifs; ifs.open(filename); char c; int cint; while (ifs >> noskipws >> c) { cint = c; cout << "'" << c << "' = " << cint << endl; } ifs; 打开(文件名); 字符c; int cint; while(ifs>>noskipws>>c){ cint=c; 您的输入文件末尾肯定有一个换行符,c++,c++11,C++,C++11,使用: #include <iostream> #include <fstream> using namespace std; int main() { ifstream ifs; ifs.open("/tmp/i"); char c; int cint; while (ifs >> noskipws >> c) { cint = c; cout << "'"

使用:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
  ifstream ifs;
  ifs.open("/tmp/i");
  char c;
  int cint;
  while (ifs >> noskipws >> c) {
    cint = c;
    cout << "'" << c << "' = " << cint << endl;
  }
  return 0;
}
我创建文件的方法是在每一行的末尾放置一个换行符,因此最后一个换行符,并且使用cat命令也显示了它

现在,我添加最后一行,不以换行符结尾:

pi@raspberrypi:/tmp $ echo -n "wxc" >> i
pi@raspberrypi:/tmp $ cat i
123
456
wxcpi@raspberrypi:/tmp $ 
pi@raspberrypi:/tmp $ ./a.out
'1' = 49
'2' = 50
'3' = 51
'
' = 10
'4' = 52
'5' = 53
'6' = 54
'
' = 10
'w' = 119
'x' = 120
'c' = 99
pi@raspberrypi:/tmp $ 
正如您所看到的,不会读取意外的最终换行符,并且使用命令cat会在文件的最后一行之后写入提示,而不仅仅是在文件的最后一行(
wxcpi@raspberrypi:/tmp$

此外:

pi@raspberrypi:/tmp $ cp /dev/null i
pi@raspberrypi:/tmp $ ./a.out
pi@raspberrypi:/tmp $ 

这意味着您创建/填充输入文件的方式在文件中放置最后一行换行符,可能是使用一个编辑器强制执行最后一行换行符

如何创建/填充输入文件?在终端
cat文件中执行此操作时,结果如何?是否在文件最后一行的同一行上得到提示?如果他在命令行上单独输入,这意味着您的文件以换行符结束您有多确定该文件没有换行符?您是如何创建该文件的?文件大小是否与您认为文件中的字符数相同?我在回答“不存在的换行符”时解释了我前面的评论你确定吗?你的编辑器正在添加新行,即使你没有键入新行。
pi@raspberrypi:/tmp $ cp /dev/null i
pi@raspberrypi:/tmp $ ./a.out
pi@raspberrypi:/tmp $