C++将 int 转换为字符串

C++ convert int into string?

本文关键字:字符串 转换 int C++      更新时间:2023-10-16

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

只需使用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(int) .

参考。

您可以将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