簡體   English   中英

C ++中的Stringstream字符串到整數轉換

[英]Stringstream string to integer conversion in C++

我剛剛閱讀了C ++中的stringstream並實現了一個簡單的程序。

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    int num;
    stringstream sso;
    string str;

    //integer to string
    cin >> num;
    sso << num;
    sso >> str;
    cout << "String form of number : " << str << endl;

    //string to integer
    cin >> str;
    sso << str;
    sso >> num; //num still has value from previous integer to string????
    cout << "Integer form of string (+2) :" << (num + 2) << endl;
    return 0;
}

這是輸出:

12
String form of number : 12
44
Integer form of string (+2) :14

我收到錯誤的輸出,因為num沒有得到更新,仍然保留以前計算的舊值。 我在做什么是愚蠢的錯誤?

在第一次輸入操作之后,stringstream獲得其EOF位設置。 這個位是粘滯的,即它不會通過添加更多輸入來解析。 作為一般規則,當您讀取數據時,還應驗證讀取是否成功。 對於流,您可以使用以下方法檢查流狀態:

if(!(istream >> value)) throw runtime_error("reading failed");

我很確定你的第二個輸入操作只是失敗了,此時該值保留了它以前的值。

您應該在使用之間清除字符串流,因為eofbit已在首次使用期間設置:

sso.clear();
sso.str("");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM