例如:
public async Task<bool> LaunchFile(string fname, string mimeType)
{
var uri = Android.Net.Uri.Parse("file://" + fname );
var intent = new Intent(Intent.ActionView);
intent.SetDataAndType(uri, mimeType);
intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask | ActivityFlags.GrantReadUriPermission );
try
{
Forms.Context.StartActivity(Intent.CreateChooser(intent, "ChooseApp"));
return true;
}
catch (Exception ex)
{
Debug.WriteLine("LaunchFile: " + ex.Message);
return false;
}
产生以下内容:string MyString = "Normal\tString";
cout << MyString << endl;
将原始字符串修饰符附加到字符串中,如下所示:
"Normal String"
产生以下内容:string MyString = R"(Normal\tString)";
cout << MyString << endl;
有没有办法将原始字符串修饰符附加到包含字符串的变量中,以便打印变量中包含的字符串的原始形式?
"Normal\tString"
所以你得到:string TestString = "Test\tString";
cout << R(TestString) << endl;
答案 0 :(得分:3)
有没有办法将原始字符串修饰符附加到包含字符串的变量,以便打印变量中包含的字符串的原始形式?
没有
但是,您可以编写一个函数,用适当的字符串替换转义序列定义的字符,即用字符串'\t'
替换字符"\\t"
。
示例程序:
#include <iostream>
#include <string>
// Performs only one substitution of \t.
// Needs to be updated to do it for all occurrences of \t and
// all other escape sequences that can be found in raw strings.
std::string toRawString(std::string const& in)
{
std::string ret = in;
auto p = ret.find('\t');
if ( p != ret.npos )
{
ret.replace(p, 1, "\\t");
}
return ret;
}
int main()
{
std::string TestString = "Test\tString";
std::cout << toRawString(TestString) << std::endl;
}
输出:
Test\tString
答案 1 :(得分:1)
此问题被标记为C ++ 11,在这种情况下,滚动自己的转换函数可能是最好的选择。
但是,如果您具有C ++ 14编译器,则可以使用List<T>
流操纵器:
std::quoted
答案 2 :(得分:0)
种类。这可行,但这不是一个很好的解决方案:
std::string strToInsert = " insert this "
std::string myRawString = R"(
raw string raw string raw string
raw string raw string raw string
)"; myRawString += strToInsert; myRawString += R"(raw string
raw string raw string raw string
)";