Non*_*biz 3 c++ struct types variable-assignment
我有点想知道我是否会失去理智,但我发誓,这段代码输出笑脸作为.name值!世界上发生了什么?到目前为止,它似乎仅在值为1时起作用,其他任何正确的错误.
我意识到代码存在缺陷 - >我不需要帮助.
#include <iostream>
#include <fstream>
#include <regex>
#include <string>
#include <list>
using namespace std;
using namespace tr1;
struct CollectedData
{
public:
string name;
float grade;
};
int main()
{
string line;
list<CollectedData> AllData;
int count;
ifstream myFile("test_data.txt");
if (myFile.fail()) {cout << "Error opening file"; return 0;}
else
{
cout << "File opened... \n";
while( getline(myFile, line) ) {
CollectedData lineData;
lineData.name = 1;
lineData.grade = 2;
AllData.push_back(lineData);
}
}
cout << "\n\n File contents: \n";
list<CollectedData>::iterator Iterator;
for(Iterator = AllData.begin();
Iterator != AllData.end();
Iterator++)
{
cout << "\t" << (*Iterator).name << " - ";
cout << "\t" << (*Iterator).grade << "\n";
}
getchar();
return 1;
}
Run Code Online (Sandbox Code Playgroud)
:-) http://img21.imageshack.us/img21/4600/capturekjc.jpg
我知道该代码是无用的,
我想知道为什么它给了我一些错误的SMILEY面孔
令人欣慰的...嘲讽
我想知道为什么它给我的SMILEY面临着错误
因为数据类型是string,并且char 0x01打印出笑脸.你可能用ASCII 0x31来代替分配值,即1字符.
笑脸是ASCII值为1的字符.不知道为什么,但显然你的编译器决定把它当作char,所以你得到了笑脸.
你的问题在这里:
lineData.name = 1;
lineData.grade = 2;
Run Code Online (Sandbox Code Playgroud)
我应该注意,你得到的符号是ASCII 1(即,正是你将lineData.name设置为).
while( getline(myFile, line) )
您需要获取该行并解析它,将正确的字符串插入lineData.name,并将整数插入到lineData.grade中.
| 归档时间: |
|
| 查看次数: |
6627 次 |
| 最近记录: |