我有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一起使用,这没有任何帮助。
答案 0 :(得分:1)
Intellisense
,它似乎永远不会被添加到VC ++中。
无论如何,您可以使用而不是Join
,Replace
您可以看到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
我希望这是你的代码所需要的!