std :: stringstream没有读取空格

时间:2015-11-27 22:28:38

标签: c++ visual-studio-2015 whitespace

    template< typename T >
    T Read( const char* Section, const char* Key )
    {
        SecureZeroMemory( m_Result, sizeof( m_Result ) );
        GetPrivateProfileString( Section, Key, 0, m_Result, sizeof( m_Result ), m_File.FullPath );
        std::istringstream Cast( m_Result );
        T Result{ };
        Cast >> std::noskipws >> Result;
        return Result;
    }

m_Result是我班级的成员变量。 (char [256])。

目标:尝试返回我在模板arg上插入的所有类型。

问题:当我发送std :: string时:&#34;示例文本返回&#34;它返回我&#34;示例&#34;而不是&#34;示例文本返回&#34;。

错误在哪里?我尝试了很多跳过或者noskipws或ws ......

对不起英语,我是一个巴西人。

1 个答案:

答案 0 :(得分:0)

std::noskipws只读取任何初始空格。 >>的{​​{1}}运算符重载始终在第一个遇到的空白字符处停止读取字符串。 std::string使其读取初始空格,但转换仍然停留在第一个非空白字符后面的第一个空白字符处。

您需要做的是为std::noskipws专门设置此模板功能,并且只返回std::string而不进行任何转换。