C++将int转换为字符串?
我试图INT转换为字符串,但它不工作,我不知道为什么...... 这里我的代码:C++将int转换为字符串?
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <array>
using namespace std;
int main()
{
struct Studentendaten {
int matrnr;
string name;
string vorname;
string datum;
float note;
};
Studentendaten stud;
array<Studentendaten,100> studArray ;
FILE * pFile;
int ch;
int mnr;
string sub;
string sub1;
string sub2;
string sub3;
string sub4;
string sub5;
int i = 0;
int pos ;
pFile=fopen("studentendaten.txt","r");
if (pFile==nullptr)
{
perror ("Fehler beim öffnen der Datei");
}
else
{
while (ch != EOF)
{
ch = fgetc(pFile);
sub += (char)(ch);
pos = sub.find(";");
if (pos != -1)
{
sub1 = sub.substr(0,pos);
sub2 = sub.substr(pos+1,pos);
sub3 = sub.substr(pos+1,pos);
sub4 =sub.substr(pos+1,pos);
sub5 =sub.substr(pos+1,pos);
mnr =stoi(sub1);
stud.matrnr = mnr;
stud.name = sub2;
stud.vorname = sub3;
stud.datum = sub4
stud.note = float(sub5);
}
if (ch == '\n')
{
stud = {matrn,name,vorname,datum,note};
studArray.[i] = stud;
i++;
}
putchar(ch);
}
fclose (pFile);
}
return 0;
}
我试着INT MNR = Stoi旅馆(SUB1); 以及int mnr = atoi(sub1); 其中sub1 =“029383214”类似的东西....为什么它不起作用?编译器抱怨......
我宁愿使用boost :: lexical_cast的,如果我是你的地方
string stringValue = lexical_cast<string>(101);
int intValue = lexical_cast<int>("101");
http://www.boost.org/doc/libs/1_54_0/doc/html/boost_lexical_cast.html
只需使用一个std::stringstream
:
int parse_int(const std::string& str)
{
std::stringstream ss(str);
int value;
if(ss >> value)
return value;
else
throw;
}
您可以使用stringstream:
#include <sstream>
...
// int to string
int intVar = 10;
std::stringstream out;
out << intVar;
std::string converted = out.str();
// string to int
std::string src = "555";
std::stringstream in(str);
int result = 0;
in >> result;
并检查boost::lexical_cast以及。
使用std::to_string(int)
。
当我使用std :: dateiLesen.cc时出现错误:54:19:error:'to_string'不是'std'的成员stud.matrnr = std :: to_string(sub1); – user2774480
@ user2774480您将需要升级编译器以使用C++ x11 –
中新的'std :: string'功能,但我已输入编译器:g ++ -std = C++ 11 -Wall -c“%f”并为make g ++ -std = C++ 11 -Wall -o“%e”“%f” – user2774480
,当你需要对格式更多的控制(零填充,十六进制等)
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
int main(int argc, const char * argv[]) {
int value = 19;
cout << to_string(value) << endl;
stringstream s1, s2;
s1 << setfill('0') << setw(4) << value;
s2 << "0x" << hex << setfill('0') << setw(8) << value;
cout << s1.str() << endl << s2.str() << endl;
}
我很困惑,您可以使用
std::to_string
简单的案件或std::stringstream
。你想int一个字符串或一个字符串到一个int? – chris'atoi' = ASCII到整数。 – Bucket
除了使用'string'外,你的代码非常喜欢C语言。 – crashmstr