สวัสดี ฉันยังใหม่กับภาษา C++ และกำลังพยายามทำงานที่เราอ่านข้อมูลจำนวนมากจากไฟล์ txt ในรูปแบบ
surname,initial,number1,number2
ฉันขอความช่วยเหลือก่อนที่จะมีคนแนะนำให้อ่านค่า 2 ค่าเป็นสตริง จากนั้นใช้ stoi() หรือ atoi() เพื่อแปลงเป็น int ใช้งานได้ดียกเว้นฉันต้องใช้พารามิเตอร์นี้ "-std=c++11" สำหรับการคอมไพล์ ไม่เช่นนั้นจะส่งกลับข้อผิดพลาด นี่ไม่ใช่ปัญหาในคอมพิวเตอร์ของฉันเองซึ่งจะจัดการ "-std=c++11" แต่น่าเสียดายสำหรับฉัน เครื่องที่ฉันต้องใช้แสดงโปรแกรมไม่มีตัวเลือกนี้
หากมีวิธีอื่นที่ฉันสามารถแปลงสตริงเป็น int ที่ไม่ใช้ stoi หรือ atoi ได้
นี่คือรหัสของฉันจนถึงตอนนี้
while (getline(inputFile, line))
{
stringstream linestream(line);
getline(linestream, Surname, ',');
getline(linestream, Initial, ',');
getline(linestream, strnum1, ',');
getline(linestream, strnum2, ',');
number1 = stoi(strnum1);
number2 = stoi(strnum2);
dosomethingwith(Surname, Initial, number1, number2);
}
-std=c++11
สำหรับatoi
แต่ฉันจะหลีกเลี่ยงatoi
เนื่องจากไม่อนุญาตให้ตรวจสอบข้อผิดพลาดใดๆ ทางออกที่ดีกว่าคือstrtoi
- person James Kanze   schedule 11.10.2013stringstream
คืออะไร ในเมื่อสิ่งที่คุณต้องการคือistringstream
? (ฉันเห็นมันตลอดเวลาและฉันไม่เข้าใจว่าทำไมใคร ๆ ถึงทำอย่างนั้น) - person James Kanze   schedule 11.10.2013istringstream
สำหรับรูปแบบประเภทนี้ ฉันจะใช้บางอย่างเช่นboost::split
(ซึ่งยังคงทิ้งปัญหาในการแปลงเป็นint
เปิดอยู่) - person James Kanze   schedule 11.10.2013