我實現了下面的代碼,它做它應該做的事,但我認爲它可以/應該被簡化。從字符構造字符串流
基本上,我需要創建一個數字向量,每個數字都包含testString中的一個數字。有沒有什麼辦法直接從char(即testString [i])構造stringstream?我寧願不涉及C風格的函數,如atoi,如果它可以用C++方式完成的話。
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main()
{
std::string testString = "abc123.bla";
std::string prefix = "abc";
std::vector<unsigned short> digits;
if (0 == testString.find(prefix))
{
for (size_t i = prefix.size(); i < testString.find("."); ++i)
{
int digit;
std::stringstream digitStream;
digitStream << testString[i];
digitStream >> digit;
digits.emplace_back(digit);
}
}
for (std::vector<unsigned short>::iterator digit = digits.begin(); digit < digits.end(); ++digit)
{
std::cout << *digit << std::endl;
}
return 0;
}
您可以使用字符串構造函數,該字符串構造函數將字符和該字符的編號構造出來(例如'(3,'a')== aaa')。 – chris
'testString [i] - '0''如果我理解正確。 – oldrinb
@oldrinb在迭代過程中,testString [i]將評估爲'1','2','3'。 –