C++子串返回错误的结果

jvi*_*tti 5 c++ substring

我有这个字符串:

std::string date = "20121020";
Run Code Online (Sandbox Code Playgroud)

我正在做:

std::cout << "** Date: " << date << "\n";
std::cout << "Year: " << date.substr(0,4) << "\n";
std::cout << "Month: " << date.substr(4,6) << "\n";
std::cout << "Day: " << date.substr(6,8) << "\n";
Run Code Online (Sandbox Code Playgroud)

但我得到:

** Date: 20121020
Year: 2012
Month: 1020
Day: 20
Run Code Online (Sandbox Code Playgroud)

请注意,月份应该是10,而不是1020.职位是正确的,尝试过一切,这是失败的吗?

Joh*_*ing 15

std::cout << "Month: " << date.substr(4,6) << "\n";
Run Code Online (Sandbox Code Playgroud)

第二个论点是错误的.您正在指定" 从4位开始,将我作为6个字符的子字符串给出".

你可能想要:

std::cout << "Month: " << date.substr(4,2) << "\n";
Run Code Online (Sandbox Code Playgroud)