c++ 要如何將 int 轉 string

如題 我要寫一個程式

將 數字 存進 string

string s[20];

for ( int i = 0 ; i < 20 ; i++ ){

  s[i] = i ;

  cout << s[i] << endl;

}

我只知道 0~9的辦法

但是要怎麼用到 10以上??

3 Answers

Rating
  • Tai
    Lv 5
    7 years ago
    Favorite Answer

    有很多方法, 如果妳要用 string, 則要注意 string[20] 與 string(20, '\0') 的差異

    #include <iostream>

    #include <string>

    #include <algorithm>

    #include <stdlib.h> // system()

    using namespace std;

    struct d2Str {

    // recursive

    char* p;

    void d2s(int n) {

    if (n) {

    char c = (n%10) + '0';

    d2s(n/10);

    *p++ = c;

    }

    }

    d2Str(int n, char *s) {

    p = s;

    d2s(n);

    *p = '\0';

    }

    };

    int main()

    {

    int num = 2010;

    ////////////////////////

    // I. recursive

    char s1[20] = {0};

    d2Str(num, s1);

    cout << s1 << endl;

    ////////////////////////

    // II. string

    // string s[20] 是 20 個 string

    // 而 string s(20, '\0') 是一個預備空間有 20 bytes 的 string

    string tmp(20, '\0');

    int i;

    for (i = 0; num; ++i){

    tmp[i] = (num % 10) + '0';

    num /= 10;

    }

    tmp[i] = '\0';

    // 可用 <algoritm> 中的 reverse copy

    string s(20, '\0');

    reverse_copy(tmp.begin(), tmp.begin()+i, s.begin());

    cout << s << "\n";

    // 或手動 reverse copy

    const char *p = tmp.c_str();

    for (s[i]='\0'; *p; s[--i] = *p++);

    cout << s << "\n";

    system("pause");

    return 0;

    }

    2013-11-22 10:06:02 補充:

    我以為是作業題 ...

    2013-11-23 04:46:07 補充:

    兩位的答案才是真正實用啊, 貼上去貼上去.

    StackOverflow 就沒有分答案跟意見區吧

  • 7 years ago

    char s[20]={'\0'};

    int i=2013;

    sprintf(s,"%d", i)

    string x(s);

  • 7 years ago

    s[i] = i; 若儲存0~9, cout真的會列印0~9 ??

    整數轉std::string最簡單的方式是用C++11以上的std::to_string()

    若沒有C++11可以寫一個:

    #include < sstream >

    template < typename T >

    std::string to_string(T t)

    {

    std::stringstream ss;

    ss << t;

    return ss.str();

    }

    s[i] = i; 改用 s[i] = to_string(i);

Still have questions? Get your answers by asking now.