是否可以格式化std::string传递一组参数?
目前我正在以这种方式格式化字符串:
string helloString = "Hello %s and %s";
vector<string> tokens; //initialized vector of strings
const char* helloStringArr = helloString.c_str();
char output[1000];
sprintf_s(output, 1000, helloStringArr, tokens.at(0).c_str(), tokens.at(1).c_str());
Run Code Online (Sandbox Code Playgroud)
但是矢量的大小是在运行时确定的.是否有任何类似的函数sprintf_s采用参数集合并格式化std :: string/char*?我的开发环境是MS Visual C++ 2010 Express.
编辑: 我想实现类似的东西:
sprintf_s(output, 1000, helloStringArr, tokens);
Run Code Online (Sandbox Code Playgroud) 我有一个我想用Python 3读取的LaTeX文件,并将值格式化为结果字符串.就像是:
...
\textbf{REPLACE VALUE HERE}
...
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何做到这一点,因为新的字符串格式化方法使用{val}符号,因为它是一个LaTeX文档,有大量的额外{}字符.
我尝试过类似的东西:
'\textbf{This and that} plus \textbf{{val}}'.format(val='6')
Run Code Online (Sandbox Code Playgroud)
但我明白了
KeyError: 'This and that'
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种转换细胞的简洁方法
Minutes:Seconds.Milliseconds 至
Seconds.Milliseconds
即
11.111 = 11.111
1:11.111 = 71.111
Run Code Online (Sandbox Code Playgroud)
我现在有一些东西,但它有点hacky,我相信必须有一些很好的excel功能为我这样做:P
谢谢!
我觉得很愚蠢 - 但我的时间格式出了问题.使用PHP并从MySQL数据库中提取日期/时间我正在尝试格式化时间显示,因此在我的12小时格式中没有前导零字符.空间很好..听起来很方便.可能是......
我想要的风格是:6:00 PM不06:00 PM
$result[0][0] 是的价值 "2013-06-06 18:00:00"
PHP代码现在是:
echo strftime('%I:%M %p', strtotime($result[0][0]));
//upper case "i" WORKS but has leading zero
Run Code Online (Sandbox Code Playgroud)
我认为我需要的PHP代码是:
echo strftime('%l:%M %p', strtotime($result[0][0]));
//Lower case "L" Provides no output
Run Code Online (Sandbox Code Playgroud)
后者是因为根据php手册:使用%l(小写'L')12小时格式的小时,前面有一个数字1到12的空格
但是当我使用这种格式时,我什么也得不到!
我做错了什么简单的事情?
(嗯,有趣的是上面的代码看起来在StackOverflow屏幕上看起来完全一样,但我输入大写字母i和小写字母L ...实际上这里是上面的i - >"我",这里是低L - > "l"??)它们在这个字体中看起来相同?
众所周知,String.format()的性能很糟糕.我看到我的(可能很常见的)典型案例有很大的改进.我多次打印相同的数据结构.让我们想象一下像"x:%dy:%dz:%d"这样的结构.我希望String.format()的主要问题是它必须始终解析格式化字符串.我的问题是:是否有一些现成的类允许只读取一次格式化字符串然后允许在变量参数填充时快速给出字符串?用法应如下所示:
PreString ps = new PreString("x:%d y:%d z:%d");
String s;
for(int i=0;i<1000;i++){
s = ps.format(i,i,i);
}
Run Code Online (Sandbox Code Playgroud)
我知道这是可能的 - 以下是我的快速和肮脏的例子,它正在我正在谈论的事情,并且在我的机器上快约10倍:
public interface myPrintable{
boolean isConst();
String prn(Object o);
String prn();
}
public class MyPrnStr implements myPrintable{
String s;
public MyPrnStr(String s){this.s =s;}
@Override public boolean isConst() { return true; }
@Override public String prn(Object o) { return s; }
@Override public String prn() { return s; }
}
public class MyPrnInt implements myPrintable{
public MyPrnInt(){}
@Override public boolean isConst() …Run Code Online (Sandbox Code Playgroud) 我有一个整数100,我如何格式化它00000100(总是8位数)?
我有一些列表和更复杂的结构包含浮点数.打印时,我看到有很多十进制数字的浮点数,但是在打印时,我不需要全部.所以我想在打印浮点数时定义自定义格式(例如2或3位小数).
我需要使用浮点数而不是十进制数.此外,我不允许截断/圆形浮动.
有没有办法改变默认行为?
我有一个GridView和其中一个GridViewColumn想要生成这样的文本:
textBlock.Text = string.Format("{0} is doing {1} .......", a, b);
Run Code Online (Sandbox Code Playgroud)
但a并b (在视图中的项目的属性),不应该仅仅表现为纯文本,但作为一个Hyperlink为例子.
(另外:格式文本应取决于项目的类型)
如何TextBlock以这种方式生成文本?(用于本地化)
问题更多:我应该自己写一些东西,还是框架提供了一种简单的方法?
我从HexConverter中获取了以下代码- 统一社区Wiki
string hex = color.r.ToString("X2") + color.g.ToString("X2") + color.b.ToString("X2");
Run Code Online (Sandbox Code Playgroud)
这给了我一个例外:
FormatException: The specified format 'X2' is invalid
Run Code Online (Sandbox Code Playgroud)
我尝试使用,"D"但即使这样也犯了错误.唯一有效的是"F格式化浮点数.
转到声明显示汇编浏览器中的mscorlib.dll/System/Single.ToString(字符串) - 到目前为止听起来不错.
谷歌搜索monodevelop字符串格式十六进制或类似的搜索字符串没有显示有关MonoDevelop限制的任何有趣的东西.
那么有什么准备,初始化,...之前我可以得到一个简单的十六进制值转换?
[更新] 颜色是Unity中的结构:
public struct Color
{
public float r;
public float g;
public float b;
// ...
Run Code Online (Sandbox Code Playgroud)
采取dtb的答案我终于使用它:
int r = (int)(color.r * 256);
int g = (int)(color.g * 256);
int b = (int)(color.b * 256);
string hex = string.Format ("{0:X2}{1:X2}{2:X2}", r, g, b);
Run Code Online (Sandbox Code Playgroud)
所以我错过了Color …
我想使用静态定义的模板进行URL构建.
我正在尝试使用ES6字符串插值功能
var template = "http://example.com/?name=${name}&age=${age}";
var name = "John";
var age = "30";
var url = `${template}`;
Run Code Online (Sandbox Code Playgroud)
预期结果:http://example.com/?name = John" = 23
实际结果:http://example.com/? name = $ {name}&age = $ {age}
在这种情况下,不能用绳子插做的是有没有更好的方法比String.prototype.replace像
var url = template.replace(/\${name}/,"John").replace(/\${age}/, 23);
Run Code Online (Sandbox Code Playgroud) java ×2
python ×2
python-3.x ×2
time ×2
binding ×1
c# ×1
c++ ×1
ecmascript-6 ×1
escaping ×1
excel ×1
javascript ×1
monodevelop ×1
optimization ×1
performance ×1
php ×1
seconds ×1
stdstring ×1
string ×1
wpf ×1