C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■91297 / 1階層)  空白を含めた数字入力、及び、区切り
□投稿者/ 774RR (697回)-(2019/06/13(Thu) 09:23:16)
えっとその辺は自分で実験したほうが早いと思うが・・・

文字(列)を扱う関数は指定以外の文字を特別扱いしないから
1. cin は空白を特別扱いせず受け付ける
2. 文字列をカンマで区切って別文字列を作ったのならスペースはそのまま

https://linuxjm.osdn.jp/html/LDP_man-pages/man3/strtol.3.html
3. 伝統的に C/C++ の文字列→数値変換関数は、次の仕様
 - 先頭に空白類があると、それはエラーにせずに読み飛ばす
 - 空白類でない文字を見つけたら、そこから処理開始
 - 当該 [型] の数値として解釈できる限り変換対象
 - 空白類や記号など数値として解釈できない文字が出たらそこまでで終了
 - このとき、解釈打ち切りの原因となった文字はバッファに残し、もし継続処理があったら再利用

#include <string>
#include <iostream>
#include <sstream>

int main() {
    std::string s;
    std::getline(std::cin, s); // 改行まで可変長文字列を読むならこっち
    std::cout << "<" << s << ">\n";
    std::stringstream ss(s);
    std::string x;
    while (std::getline(ss, x, ',')) { // 特定文字で区切るならこっち
	std::cout << "<" << x << ">\n";
	std::cout << std::stoi(x) << std::endl;
    }
}

なるソースコードに提示例の文字列を与えると分割後文字列 "6 1" に対して stoi 結果は 6 っす。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←空白を含めた数字入力、及び、区切り /ぷら →Re[2]: 空白を含めた数字入力、及び、区切り /ぷら
 
上記関連ツリー

空白を含めた数字入力、及び、区切り / ぷら (19/06/13(Thu) 07:57) #91295
空白を含めた数字入力、及び、区切り / 774RR (19/06/13(Thu) 09:23) #91297 ←Now
  └ Re[2]: 空白を含めた数字入力、及び、区切り / ぷら (19/06/13(Thu) 18:44) #91304 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信