转换" \"的所有实例到" \\"在System :: String ^中并转换为char *

时间:2014-06-26 08:32:35

标签: string visual-c++

我有openFileDialog返回文件名。我想将该文件名保存为char *,以便稍后可以使用fstream打开它。为此,我需要在字符串中将\的所有实例替换为\\

我这样做的策略是在System::String^的每个实例上拆分\,然后将生成的System::String^数组的所有元素与\\一起加入将它们分开。

这是我编写的函数,但即使我传递包含\的String ^,它似乎也返回一个空字符串。

private: const char* getCharPointer(String^ name){

    array<String^>^ words;
    String^ delimStr = "\\";
    array<Char>^ delimiter = delimStr->ToCharArray( );
    String^ replaceDelim = "\\\\";

    words = name->Split(delimiter);

    String^ tidiedName = String::Join( replaceDelim, words );
    label1->Text = tidiedName;
    std::string newname=msclr::interop::marshal_as< std::string >( tidiedName);

    const char* name_cstr = newname.c_str();

    return name_cstr;
}

我是Visual C ++和Windows的新手,所以我会很感激。 IntelliSense似乎无法与Visual Studio 2010一起使用,这没有任何帮助。

1 个答案:

答案 0 :(得分:1)

VC ++中没有提供

Intellisense,它似乎永远不会被添加到VC ++中。 无论如何,您可以使用而不是JoinReplace 您可以看到here参考。

看看这个简单的程序[我使用的是Windows Form Application,此代码位于button event handler]下。

String^ a = "Hello\\World";

String^ b = a->Replace("\\", "\\\\"); //Replace \ with \\
MessageBox::Show(a + " -> " + b);

如果你运行它,你将得到这个输出。

Hello\World -> Hello\\World

我希望这是你的代码所需要的!