getline截断第一个字符
getline truncating first character
我已经看了这里、这里和这里。我没有使用cin.ignore()。我对这段代码有两个问题,但将限制为一个问题。unsigned int int long";sID";应包含";020961797";但仅包含";20961797;
bool GPA::importStudents(string mapFileName, string setFileName)
{
long long int sID;
string sName;
string sAddress;
string sPhone;
stringstream ss;
string line;
int mline_count = 0;
int sline_count = 0;
double x;
int y;
ifstream map_file;
ifstream set_file;
map_file.open(mapFileName);
set_file.open(setFileName);
if (map_file.is_open()){
for (int i = 0; i < mline_count/4; i++){
getline(map_file, line);
ss << line;
ss >> sID;
getline(map_file, line);
ss << line;
ss >> sName;
getline(map_file, line);
ss << line;
ss >> sAddress;
getline(map_file, line);
ss << line;
ss >> sPhone;
StudentInterface * SI = new Student(sID, sName, sAddress, sPhone);
my_map.insert(std::pair<unsigned long long int, StudentInterface*>(sID, SI));
//my_map.emplace(Student(sID, sName, sAddress, sPhone));
}
}
}
以下是应该从中读取数据的文件的第一部分:
020961797
Joshua Cooper
0509 McCrooke Avenue,Columbus,California 52826
552-534-8671
1001111111101101000000101b
,因为它有一个数字表示。使用默认格式打印,它确实呈现为20961797
。如果需要,可以通过操纵器setw(9)
和setfill(' ')
强制前导0
获取020961797
。
除非必须对该字段值执行算术运算,否则将其作为字符串处理可能更合适。
您不能使用int
来存储前导零,您必须将sID存储为string
,然后随时将其转换为数字。可以说,ID是一个标识符,而不是一个数字,你实际上不需要对它进行任何数学运算,所以string
将是的理想解决方案
string sID = "020961797";
//For some reason you need the ID as a number
int idToInt = atoi(sID.c_str());
请注意,当您通过
数字类型包含数字,而不是数字的表示。"十"、"10"、"010"、"我的手指数"answers"IIIIIIIIII"都是同一数字的不同表示。如果要保留字符,请使用字符串。
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- C++:使用另一个字符将一个字符大写
- 我可以得到一个字符 * 到一个 std::sregex_iterator 匹配 str() 吗?
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 为什么第一个Dynamic_cast没有投射到基类?
- 将第一个n个字符复制到std :: string
- 一个奇怪的字符出现在我的字符数组的第一个
- 当一长串字符传递给第一个 cin 时,为什么不暂停第二个 cin 上的输入?
- 哪个字符是 c++ 中 4 个字符中的第一个
- 从 std::string 中提取(第一个)UTF-8 字符