C ++用另一个wstring替换wstring(超过80个字符)

时间:2017-04-10 14:20:29

标签: c++ string replace substring std

编辑: 代码应该没问题......上游代码是否有问题。

谢谢你们所有人!

最初的问题:

我从

找到了一个代码示例

Replace part of a string with another string

我做了一些改动(编辑):

jQuery(function(){

    window.onbeforeunload = function() {
        console.log(clicked);
    };

    var clicked = null;
    jQuery('button').on("click", function () {
        clicked = this.id;
    });

});

一开始就正常工作。但是当我生成一个包含135个字符的字符串时,结果只返回前79个字符。

例如,这是我的wstring:

bool replace(std::wstring& str, const std::wstring& from, const std::wstring& to) {
size_t start_pos = str.find(from);
if (start_pos == std::wstring::npos)
    return false;
str.replace(start_pos, from.length(), to);
return true;
}

// Source wstring
// (This is an example, actual wstring is return by a code library)
wstring inputString = L"The apple is a deciduous tree, \\ngenerally standing 1.8 to 4.6 m (6 to 15 ft) tall in cultivation \\nand up to 12 m (39 ft) in the wild."
// Place some conditions
wstring textToReplace = L"\\n";
wstring newWstring = L"\n";

replace(inputString, textToReplace, newWstring);

我要更换" \\ n"通过" \ n"在源代码中。所以我可以只打印一行(wcout)。

这就是我得到的:

The apple is a deciduous tree, \\ngenerally standing 1.8 to 4.6 m (6 to 15 ft) tall in cultivation \\nand up to 12 m (39 ft) in the wild.

我想要的是:

The apple is a deciduous tree, \ngenerally standing 1.8 to 4.6 m (6 to 15 ft) 

编辑: 我知道我应该放一个while循环而我之前做过但不能保存。

如果wstring长度小于80,那就完全可以了。

" \\ n"实际上被" \ n"取代,并且没有问题cout<<。

但是我不明白最后57个字符是怎么回事。

他们已经离开...如何用另一个wstring替换部分wstring,

但源wstring是"更长"超过80个字符?

1 个答案:

答案 0 :(得分:0)

通过检查inputString.size()

的值

代码库返回的wstring始终为79长度。

这是一个上游代码库问题... 谢谢你们所有人!