Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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++ 为结构属性指定不正确的值类型时,请笑脸!_C++_Struct_Types_Variable Assignment - Fatal编程技术网

C++ 为结构属性指定不正确的值类型时,请笑脸!

C++ 为结构属性指定不正确的值类型时,请笑脸!,c++,struct,types,variable-assignment,C++,Struct,Types,Variable Assignment,我有点想知道我是不是疯了,但我向你发誓,这段代码输出笑脸作为.name值!!到底发生了什么事?到目前为止,它似乎只在值为1时起作用,其他任何正确的方法都会给出错误 我意识到代码有缺陷->我不需要帮助 #包括 #包括 #包括 #包括 #包括 使用名称空间std; 使用名称空间tr1; 结构收集数据 { 公众: 字符串名; 浮子等级; }; int main() { 弦线; 列出所有数据; 整数计数; ifstream myFile(“test_data.txt”); 如果(myFile.fail(

我有点想知道我是不是疯了,但我向你发誓,这段代码输出笑脸作为.name值!!到底发生了什么事?到目前为止,它似乎只在值为1时起作用,其他任何正确的方法都会给出错误

我意识到代码有缺陷->我不需要帮助

#包括
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间tr1;
结构收集数据
{
公众:
字符串名;
浮子等级;
};
int main()
{
弦线;
列出所有数据;
整数计数;
ifstream myFile(“test_data.txt”);
如果(myFile.fail()){cout您的问题在这里:

lineData.name = 1;
lineData.grade = 2;
我应该注意,您得到的符号是ASCII 1(即,正是您将lineData.name设置为的符号)

while(getline(myFile,line))


您需要获取该行并对其进行解析,在lineData.name中插入一个正确的字符串,并在lineData.grade中插入一个整数。

笑脸是ASCII值为1的字符。不确定原因,但显然您的编译器决定将其视为字符,因此您得到了笑脸。

正在为该字符串分配一个字符值(1),它恰好是ASCII字符集中的笑脸

我想知道为什么它给了我笑脸而不是错误


因为数据类型是string,char
0x01
会打印一张笑脸。您可能需要指定值
0x31
,即ASCII中的字符
1

就像其他人所说的名称是string类型,因此最好为其指定一个字符串:

lineData.name = "1";
倒逗号将让编译器知道该值是字符串,并且您将停止获得笑脸

也就是说


最酷的。Bug。有史以来。

那个笑脸是角色0x01。+1,当时的情景和对它的轻微愤怒让我发笑。代码表:这与空终止无关。我从“脸”中假设有多个,一个接一个。在重读这个问题时,这似乎是一个错误的假设,所以我编辑了答案。另外,当我发布时,我在一个代理后面阻止了图像。所以我用我拥有的信息做了处理。或者值
'1'
,这是一种书写字符1smiley fac的便携方式e不是ASCII字符。它位于IBM-PC(MS-DOS代码页437)集合中。
lineData.name = "1";