2016-04-01 12 views
0

permuteを呼び出すと、プログラムの下に、printという文字列に追加された都市名が表示されますが、空白のみが表示されます。Coutは自分の文字列を出力しません

このプログラムと同じくらい難しいのは、私のプリント機能が私に最も迷惑な問題を与えるとは思わなかったからです。あなたの都市が1、2、3の番号が付けられていた場合

int main() 
    { 
    string cities; 
    string printCity = ""; 
    string line; 
    char command = 0; 
    unsigned city = 0; 
    while (getline(cin, line)) 
    { 
     sscanf(line.c_str(), "%c %d", &command, &city); 
     if (command != 'c') 
      break; 
     cities.push_back((unsigned char)city); 
     printCity +=(city); 
    } 

    gFirstCity = cities[0]; 

    unsigned to = 0; 
    unsigned from = 0; 
    uint32_t cost = 0; 

    sscanf(line.c_str(), "%c %d %d %d", &command, &to, &from, &cost); 
    graph[to][from]=cost; 
    graph[from][to]=cost; 


    while (getline(cin, line)) 
    { 
     sscanf(line.c_str(), "%c %d %d %d", &command, &to, &from, &cost); 
     graph[to][from]=cost; 
     graph[from][to]=cost; 
    } 


    permute((char*)cities.c_str()+1, 0, cities.length()-1); 
    cout << "Minimum cost for the tour: "; 
    cout << printCity; 

    cout << " is: "<< minTour << endl; 

    return EXIT_SUCCESS; 



} 
+0

// note: needs <sstream> string int2str(int x) { stringstream ss; ss << x; return ss.str(); } 

その後、少しだけあなたのコードを変更します。代わりに、明示的にこのようなものを使用して、最初のstringcityを変換します。それはちょうど約13の整数で構成されていて、何も表示していない文字列でなければなりません。 – Remixt

+0

この質問をチェックして、 'int'と' string'をどのように連結するかを調べてください。また、次回は関係のないコードを削除してみてください。 –

答えて

4

、そしてprintcitiesは値'\0x01' '\0x02''\0x03'の3つの文字を含む文字列になります。これはうまく印刷されません。 printcitiesに "123"を保持させようとしていたら、文字列ストリーム、またはstd :: to_string()が必要です。

0

私は他のところで言われていることに同意します:intを文字列に連結することは、あなたが望むように動作していません。まあ並び替える機能が正常に出力し、唯一の問題は、印刷の都市である

printCity += int2str(city); 
+2

または、同じことをする標準ライブラリ関数を使用してください: 'printCity + = std :: to_string(city);' –

関連する問題