[テストコード]白駿1152単語の個数-C++



問題を解く

  • C++では、文字列のスペースを区別するのは難しい.今回の機会にtokenizeを使った文字列を整理しました.
  • strtok,strtok sは最初に思いついた関数です.string.gヘッダに含まれていますが、これを利用して返すと「安全ではない」というエラーが発生するので使用しないでください.
  • そこで、sstreamのistringstreamを使うことにしました.istringstreamは文字列を解析するために使用されます.
  • getlineで文字列入力を受け入れます.
  • 文字列sは、
  • istringstreams(s)によってグループ化される.
  • でカットされた文字列を含む変数separedを用いてss>>解析を行い,1回の解析を行う.
  • While文を入力して
  • 解析を繰り返します.
  • 今回はスペースを使用して解析しましたが、区切り文字がある場合は次のように処理します.
    ssを使用してgetlineを繰り返します.
    getlineで区切り記号を使用する場合は、単一引用符("")を使用する必要があります.
    大引用符は文字列を表し、小引用符は文字を表す.
    #include <iostream>
    #include <string>
    #include <sstream>
    
    using namespace std; 
    
    int main() {
    
    	string s; 
    	getline(cin, s);
    	istringstream ss(s);
    	string parsed; 
    
    	while (getline(ss,parsed,','))
    	{
    		cout <<parsed<< "\n";
    	}
    	return 0;
    }

    C++コード

    #include<iostream>
    #include <sstream> // istringstream 
    #include <string>
    
    using  namespace std; 
    
    int main() {
    	//string의 최대 길이 4294967294
    	string s; 
    	string parsed;
    	getline(cin, s);
    
    	istringstream ss(s);
    	int count = 0; 
    
    	while (ss >> parsed) {
    		count++; 
    	}
    
    	cout << count;
    	return 0;
    }