2013-11-01 142 views
0

我试图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”类似的东西....为什么它不起作用?编译器抱怨......

+6

我很困惑,您可以使用std::to_string简单的案件或std::stringstream。你想int一个字符串或一个字符串到一个int? – chris

+0

'atoi' = ASCII到整数。 – Bucket

+3

除了使用'string'外,你的代码非常喜欢C语言。 – crashmstr

回答

2

只需使用一个std::stringstream

int parse_int(const std::string& str) 
{ 
    std::stringstream ss(str); 
    int value; 

    if(ss >> value) 
     return value; 
    else 
     throw; 
} 
1

您可以使用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以及。

1

使用std::to_string(int)

Reference.

+0

当我使用std :: dateiLesen.cc时出现错误:54:19:error:'to_string'不是'std'的成员stud.matrnr = std :: to_string(sub1); – user2774480

+1

@ user2774480您将需要升级编译器以使用C++ x11 –

+0

中新的'std :: string'功能,但我已输入编译器:g ++ -std = C++ 11 -Wall -c“%f”并为make g ++ -std = C++ 11 -Wall -o“%e”“%f” – user2774480

1

,当你需要对格式更多的控制(零填充,十六进制等)

#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; 
}