我尝试将 int 转换为 string ,但它不起作用我不知道为什么...... 这是我的代码:
#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”之类的东西......为什么它不起作用?编译器抱怨...
std::stringstream
:
int parse_int( const std::string& str )
{
std::stringstream ss( str );
int value;
if( ss >> value )
return value;
else
throw;
}
您可以使用字符串流:
#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
,或者在需要更多地控制格式(零填充、十六进制等)时使用 std::stringstream
#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;
}
如果我在你的地方,我宁愿使用 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