字符数组输出正确,但实际上没有存储正确的值
Char array outputting correctly but not actually storing right values
C++新手,遇到了另一个需要学习的障碍。尝试制作一个简单的程序,从文件中读取并将字符存储到char数组中。
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
using namespace std;
int main ()
{
const int SIZE = 9;
char arr[SIZE];
char currentChar;
int numChar = 0;
int i = 0;
ifstream infile ("file.txt");
if (!infile)
{
cout << "Can not open the input file"
<< " This program will end."<< "n";
return 1;
}
while(infile.get(arr[i]))
{
i++;
numChar ++;
}
for(i=0;i<numChar;i++)
{
cout << arr[i];
}
cout << "n" << arr[1];
return 0;
}
file.txt的内容:
A
a
9
!
问题是:
for(i=0;i<numChar;i++)
{
cout << arr[i];
}
具有与读取的文件相同的输出,但当我手动检查数组元素时。arr[1]正在存储空白,并且arr[3]=‘a’。当我试图用isalpha和isdigit语句评估每个元素的字符类型时,我发现了这一点。为什么它在进入下一行之前存储了2个空白元素,为什么输出看起来是正确的,但实际上不是?有没有比我现在做的更简单、更有效的方法?
提前感谢您的帮助。
您正在读取的是文件中每个字符旁边的一个新行字符。如果在显示字符时将其强制转换为int,则会得到以下内容:
65 //ascii code for 'A' at arr[0]
10 //ascii code for new line character(n) at arr[1]
97 //ascii code for 'a' at arr[2]
10
..
相关文章:
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 在c++中获取两个大int,并将它们存储在数组中
- 使用 Xcode 将双精度存储在数组C++中
- 访问表示 2D 矩阵的 1D 存储数组
- 从输入文件读取整数,仅存储数组C 中的唯一整数
- 如何在队列中存储数组
- 按列主要顺序迭代行大量存储数组
- 如何使存储数组的二进制搜索稳定
- 将行中的字段从textfile中更改为存储数组,而不是重新编写文件
- 存储数组索引值C++
- 存储数组的地方,如果我在返回后声明它
- 缺少存储数组地址的内存
- 使用static在函数中存储数组各个组件的值
- 如何存储数组的每个相邻子数组的和
- 在c++中存储数组映射
- 存储数组的地址列表,以解析原始的非终止文本
- 用于存储数组的字符串
- c++存储数组下一个位置的地址
- 在 for 循环中创建和存储数组